﻿<?xml version="1.0" encoding="utf-8" ?>
<GuidancePackage xmlns="http://schemas.microsoft.com/pag/gax-core"
    Name="PathfinderSoftwareFactory" 
    Caption="Pathfinder Software Factory"
    Description="Software Factory for Lego Mindstorms Pathfinder Robot Control"
    BindingRecipe="BindingRecipe"
    Guid="8ab7e03d-8925-4056-8dbb-61598821a6f2" 
    SchemaVersion="1.0">
	<Overview Url="Overview.htm"/>
	<Recipes>
    <!-- Test -->
    <!-- Test -->
    <!-- このレシピをStrategyプロジェクトにしていく。ファイルの追加はプロジェクトを作った後、AddItemFromStringActionで行えばよい。T4で日本語文字化け -->
    <Recipe Name="TestAppVCPPProjCreate" Bound="true">
      <Types>
        <TypeAlias Name="Evaluator" Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.ExpressionEvaluatorValueProvider,Microsoft.Practices.RecipeFramework.Library" />
      </Types>
      <Caption>Test Create App VC++ Project</Caption>
      <HostData>
        <Icon ID="1047"/>
        <CommandBar Name="Solution Folder"/>
      </HostData>
      <Arguments>
        <Argument Name="ProjectName" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="TestProject"/>
        </Argument>
        <Argument Name="IncDirs" Type="System.String[]">
          <ValueProvider Type="EEst.SoftwareFactory.ValueProviders.CoreIncDirsValueProvider, PathfinderSoftwareFactory"
             />
        </Argument>
        <Argument Name="FileProvider" Type="EEst.SoftwareFactory.ValueProviders.VCPPProjectFileProvider, PathfinderSoftwareFactory">
          <ValueProvider Type="EEst.SoftwareFactory.ValueProviders.GenAppFilesValueProvider, PathfinderSoftwareFactory"
             />
        </Argument>
        <Argument Name="SrcFiles" Type="System.String[]">
          <ValueProvider Type="Evaluator"
             Expression="$(FileProvider.SourceFiles)" />
        </Argument>
        <Argument Name="HdrFiles" Type="System.String[]">
          <ValueProvider Type="Evaluator"
             Expression="$(FileProvider.HeaderFiles)" />
        </Argument>
        <Argument Name="CurrentFolder" Type="EnvDTE.Project, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
          <ValueProvider Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.FirstSelectedProject, Microsoft.Practices.RecipeFramework.Library" />
        </Argument>
      </Arguments>
      <Actions>
        <Action Name="ItemContent"
                Type="Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates.TextTemplateAction, Microsoft.Practices.RecipeFramework.VisualStudio.Library"
                Template="Text\VCProjExt.vcproj.t4">
          <Input Name="ProjectName" RecipeArgument="ProjectName"/>
          <Input Name="IncDirs" RecipeArgument="IncDirs" />
          <Input Name="Sources" RecipeArgument="SrcFiles" />
          <Input Name="Headers" RecipeArgument="HdrFiles" />
          <Output Name="Content" />
        </Action>
        <Action Name="CheckContent" Type="EEst.SoftwareFactory.Actions.CheckContentAction, PathfinderSoftwareFactory">
          <Input Name="TextContent" ActionOutput="ItemContent.Content"/>
        </Action>
        <Action Name="CreateVCPPProjFile" Type="EEst.SoftwareFactory.Actions.CreateVCPProjectByT4Action, PathfinderSoftwareFactory">
          <Input Name="ProjectName" RecipeArgument="ProjectName"/>
          <Input Name="FileContent" ActionOutput="ItemContent.Content"/>
          <Output Name="ProjectFileName"/>
          <Output Name="TargetFolder"/>
        </Action>
        <Action Name="AddProjFileToSolution" Type="EEst.SoftwareFactory.Actions.AddProjectToSolutionFolderAction, PathfinderSoftwareFactory">
          <Input Name="SolutionProject" ActionOutput="CreateVCPPProjFile.TargetFolder"/>
          <Input Name="ProjectFile" ActionOutput="CreateVCPPProjFile.ProjectFileName"/>
        </Action>
      </Actions>
    </Recipe>
    <!-- Test -->
    <!-- C++ソース/ヘッダーファイルのインポートとUnboundレシピのサンプル -->
    <Recipe Name="TestAddStrategyFile" Bound="false">
      <Caption>Test Add Strategy File</Caption>
      <HostData>
        <Icon ID="1047"/>
        <CommandBar Name="Solution Folder"/>
      </HostData>
      <Arguments>
        <Argument Name="ProjectName"/>
        <Argument Name="Author" />
        <Argument Name="FileType"/>
        <Argument Name="CurrentProject" Type="EnvDTE.Project, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
            <ValueProvider Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.FirstSelectedProject, Microsoft.Practices.RecipeFramework.Library" />
        </Argument>
        <Argument Name="FileName"/>
      </Arguments>
      <GatheringServiceData>
        <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
          <Pages>
            <Page>
              <Title>Set infos...</Title>
              <Fields>
                <Field Label="Project Name" ValueName="ProjectName"></Field>
                <Field Label="File Type" ValueName="FileType"/>
                <Field Label="File Name" ValueName="FileName"/>
              </Fields>
            </Page>
          </Pages>
        </Wizard>
      </GatheringServiceData>
      <Actions>
        <Action Name="ItemContent"
                Type="Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates.TextTemplateAction, Microsoft.Practices.RecipeFramework.VisualStudio.Library"
                Template="Text\CPPFiles\Strategy.hcpp.t4">
          <Input Name="ProjectName" RecipeArgument="ProjectName"/>
          <Input Name="FileType" RecipeArgument="FileType" />
          <Output Name="Content" />
        </Action>
        <Action Name="CheckContent" Type="EEst.SoftwareFactory.Actions.CheckContentAction, PathfinderSoftwareFactory">
          <Input Name="TextContent" ActionOutput="ItemContent.Content"/>
        </Action>
        <Action Name="AddToProject" Type="Microsoft.Practices.RecipeFramework.Library.Actions.AddItemFromStringAction, Microsoft.Practices.RecipeFramework.Library">
          <Input Name="Project" RecipeArgument="CurrentProject"/>
          <Input Name="Content" ActionOutput="ItemContent.Content"/>
          <Input Name="TargetFileName" RecipeArgument="FileName" />
        </Action>
      </Actions>
    </Recipe>
    <!-- Application層のVC++プロジェクト生成用Recipe定義インポート -->
    <xi:include href="Recipes/CreateStrategyVCPPProjectRecipe.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
    <xi:include href="Recipes/CreateDriveControlVCPPProjectRecipe.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
    <xi:include href="Recipes/CreatePathRecognizerVCPPProjectRecipe.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
    <xi:include href="Recipes/CreateApplicationVCPPProjectRecipe.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
    <!-- VC++プロジェクト部品インポートレシピ定義インポート -->
    <xi:include href="Recipes/ImportArgorithmVCPPProjectRecipe.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
    <Recipe Name="ProtoCopyContents" Bound="true">
				  <!-- This recipe doesn't work!!! Why?? -->
			<Caption>Prototype of Copy Contents</Caption>
			<HostData>
				<Icon ID="1047"/>
				<CommandBar Name="Solution Folder"/>
			</HostData>
			<Arguments>
				<Argument Name="Source" Type="System.String"/>
				<Argument Name="Destination" Type="System.String"/>

			</Arguments>
			<GatheringServiceData>
				<Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
					<Pages>
						<Page>
							<Title>Prototype of Copy Contents</Title>
							<Fields>
								<Field ValueName="Source" Label="Source">
								</Field>
								<Field ValueName="Destination" Label="Destination">
								</Field>
							</Fields>
						</Page>
					</Pages>
				</Wizard>
			</GatheringServiceData>
			<Actions>
				<Action Name="CopyContents" Type="EEst.SoftwareFatory.Actions.ImportContentsAction, PathfinderSoftwareFactory">
					<Input Name="SourcePath" RecipeArgument="Source"/>
					<Input Name="DestPath" RecipeArgument="Destination"/>
				</Action>
			</Actions>
		</Recipe>
		<Recipe Name="ProtoCheck" Bound="true">
			<Caption>Import Registered Contents</Caption>
			<HostData>
				<Icon ID="680"/>
				<CommandBar Name="Solution Folder"/>
					 </HostData>
			<Arguments>
				<Argument Name="SourcePath" Required="true" Type="System.String"/>
				<Argument Name="DestPath" Type="System.String"/>
				<Argument Name="TargetName" Type="System.String"/>
			</Arguments>
			<GatheringServiceData>
				<Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
					<Pages>
						<Page>
							<Title>Temporary Check</Title>
							<Fields>
								<Field ValueName="SourcePath" Label="Source Path"/>
								<Field ValueName="DestPath" Label="Dest Path"/>
								<Field ValueName="TargetName" Label="Target Name"/>
							</Fields>
								 </Page>
							   </Pages>
							</Wizard>
					 </GatheringServiceData>
			<Actions>
				<Action Name="TemporaryActionCheck" Type="EEst.SoftwareFactory.Actions.ImportContents2Action, PathfinderSoftwareFactory">
					<Input Name="SourcePath" RecipeArgument="SourcePath"/>
					<Input Name="DestPath" RecipeArgument="DestPath"/>
					<Input Name="TargetName" RecipeArgument="TargetName"/>
							</Action>
					 </Actions>
			  </Recipe>
		<Recipe Name="CreateVCPPProjectRecipe" Bound="true">
      <!-- This Recipe doesn't work. it seems to be not able to use DTE's and VCProjectEngine's classes together! -->
      <Caption>Create VC++ Project -- Bad!!</Caption>
      <HostData>
        <Icon ID="680"/>
        <CommandBar Name="Solution Folder"/>
      </HostData>
      <Arguments>
        <Argument Name="ProjectName">
          <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library" />
        </Argument>
        <Argument Name="SolutionFolder" Required="false">
          <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library" />
        </Argument>
      </Arguments>
      <GatheringServiceData>
        <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
          <Pages>
            <Page>
              <Title>Project Name</Title>
              <Fields>
                <Field Label="Project Name" ValueName="ProjectName" />
                <Field Label="Solution Folder" ValueName="SolutionFolder"  />
              </Fields>
            </Page>
          </Pages>
        </Wizard>
      </GatheringServiceData>
      <Actions>
        <Action Name="CreateVCPPProject" Type="EEst.SoftwareFactory.Actions.CreateVCPPProjectAction, PathfinderSoftwareFactory">
          <Input Name="ProjectName" RecipeArgument="ProjectName"/>
          <Input Name="SolutionFolder" RecipeArgument="SolutionFolder"  />
          <Output Name="ProjectFile" />
          <Output Name="TargetFolder" />
        </Action>
        <Action Name="AddVCPPProject" Type="EEst.SoftwareFactory.Actions.AddVCPPProjectToSolutionFolderAction, PathfinderSoftwareFactory">
          <Input Name="ProjectFile" ActionOutput="CreateVCPPProject.ProjectFile"/>
          <Input Name="TargetFolder" ActionOutput="CreateVCPPProject.TargetFolder"/>
        </Action>
      </Actions>
    </Recipe>
    <!-- こちらは正しく動くレシピ。VC++プロジェクトを生成できる -->
    <Recipe Name="CreateVCPPProject2Recipe" Bound="true">
      <Caption>Create VC++ Project</Caption>
      <HostData>
        <Icon ID="680"/>
        <CommandBar Name="Solution Folder"/>
      </HostData>
      <Arguments>
        <Argument Name="ProjectName">
          <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
        </Argument>
        <Argument Name="FolderName" Required="false">
          <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
        </Argument>
      </Arguments>
      <GatheringServiceData>
        <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
          <Pages>
            <Page>
              <Title>Specify VC++ Project Name</Title>
              <Fields>
                <Field ValueName="ProjectName" Label="Project Name"/>
                <Field ValueName="FolderName" Label="Folder Name"/>
              </Fields>
            </Page>
          </Pages>
        </Wizard>
      </GatheringServiceData>
      <Actions>
        <Action Name="GetPrjGUID" Type="EEst.SoftwareFactory.Actions.GetNewGuidAction, PathfinderSoftwareFactory">
          <Output Name="NewID"/>
        </Action>
        <Action Name="GetSrcGUID" Type="EEst.SoftwareFactory.Actions.GetNewGuidAction, PathfinderSoftwareFactory">
          <Output Name="NewID"/>
        </Action>
        <Action Name="GetHdrGUID" Type="EEst.SoftwareFactory.Actions.GetNewGuidAction, PathfinderSoftwareFactory">
          <Output Name="NewID"/>
        </Action>
        <Action Name="GenerateProjectFile" Type="Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates.TextTemplateAction, Microsoft.Practices.RecipeFramework.VisualStudio.Library"
                Template="Text\VCProj.vcproj.t4">
          <Input Name="ProjectName" RecipeArgument="ProjectName"/>
          <Input Name="ProjectID"  ActionOutput="GetPrjGUID.NewID"/>
          <Input Name="HdrFilterID"  ActionOutput="GetSrcGUID.NewID"/>
          <Input Name="SrcFilterID"  ActionOutput="GetHdrGUID.NewID"/>
          <Output Name="Content"/>   
        </Action>
          <Action Name="CreateVCPPProjFile" Type="EEst.SoftwareFactory.Actions.CreateVCPProjectByT4Action, PathfinderSoftwareFactory">
            <Input Name="ProjectName" RecipeArgument="ProjectName"/>
            <Input Name="FileContent" ActionOutput="GenerateProjectFile.Content"/>
            <Input Name="SubFolder" RecipeArgument="FolderName"/>
            <Output Name="ProjectFileName"/>
            <Output Name="TargetFolder"/>
        </Action>
        <Action Name="AddProjFileToSolution" Type="EEst.SoftwareFactory.Actions.AddProjectToSolutionFolderAction, PathfinderSoftwareFactory">
          <Input Name="SolutionProject" ActionOutput="CreateVCPPProjFile.TargetFolder"/>
          <Input Name="ProjectFile" ActionOutput="CreateVCPPProjFile.ProjectFileName"/>
        </Action>
      </Actions>
    </Recipe>
    <Recipe Name="AddFileToSolutionRecipe" Bound="true">
      <Caption>Add File to Solution...</Caption>
      <HostData>
        <Icon ID="1046"/>
        <CommandBar Name="Solution Folder"/>
      </HostData>
      <Arguments>
        <Argument Name="FolderName">
          <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
        </Argument>
        <Argument Name="ProjectFile">
          <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
        </Argument>
      </Arguments>
      <GatheringServiceData>
        <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
          <Pages>
            <Page>
              <Title>Specify Folder and Project File</Title>
              <Fields>
                <Field ValueName="FolderName" Label="Folder Name"/>
                <Field ValueName="ProjectFile" Label="Project File Name">
              <!--    <Editor Type="EEst.SoftwareFactory.Editors.FileChooser, PathfinderSoftwareFactory"/> -->
             <!--     <Editor Type="EEst.SoftwareFactory.Editors.ItemTemplateChooser, PathfinderSoftwareFactory"/> -->
                </Field>
              </Fields>
            </Page>
          </Pages>
        </Wizard>
      </GatheringServiceData>
      <Actions>
        <Action Name="FindFolder" Type="EEst.SoftwareFactory.Actions.FindSolutionFolderAction, PathfinderSoftwareFactory">
          <Input Name="FolderPath" RecipeArgument="FolderName"/>
          <Output Name="FolderProject"/>
        </Action>
        <Action Name="AddProjectToSolution" Type="EEst.SoftwareFactory.Actions.AddProjectToSolutionFolderAction, PathfinderSoftwareFactory">
          <Input Name="SolutionProject" ActionOutput="FindFolder.FolderProject"/>
          <Input Name="ProjectFile" RecipeArgument="ProjectFile"/>
          <Output Name="AddedProject"/>
        </Action>
      </Actions>
    </Recipe>
    <Recipe Name="FindSolutionProjectRecipe" Bound="true">
      <Caption>Find Solution Folder Project</Caption>
      <HostData>
        <Icon ID="1046"/>
        <CommandBar Name="Folder"/>
        <CommandBar Name="Project"/>
        <CommandBar Name="Solution Folder"/>
      </HostData>
      <Arguments>
        <Argument Name="FolderName">
          <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
        </Argument>
      </Arguments>
      <GatheringServiceData>
        <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
          <Pages>
            <Page>
              <Title>Folder Name</Title>
              <Fields>
                <Field ValueName="FolderName" Label="Folder Name"/>
              </Fields>
            </Page>
          </Pages>
        </Wizard>
      </GatheringServiceData>
      <Actions>
        <Action Name="FindFolder" Type="EEst.SoftwareFactory.Actions.FindSolutionFolderAction, PathfinderSoftwareFactory">
          <Input Name="FolderPath" RecipeArgument="FolderName"/>
        </Action>
      </Actions>
    </Recipe>
    <Recipe Name="BindingRecipe">
			<Types>
				<TypeAlias Name="RefCreator" Type="Microsoft.Practices.RecipeFramework.Library.Actions.CreateUnboundReferenceAction, Microsoft.Practices.RecipeFramework.Library"/>
			</Types>
			<Caption>Creates unbound references to the guidance package</Caption>
			<Actions>
				<Action Name="UnboundT4Template" Type="RefCreator" AssetName="GenerateRepeatingClassT4"
						ReferenceType="Microsoft.Practices.RecipeFramework.Library.AssetReferences.UnboundReferences.CSharpProjectRecipeReference, Microsoft.Practices.RecipeFramework.Library" />
        <Action Name="CreateSampleUnboundTemplateRef" Type="RefCreator" AssetName="Projects\SampleLibrary\SampleLibrary.vstemplate"
						ReferenceType="EEst.SoftwareFactory.References.SolutionFolderAReference, PathfinderSoftwareFactory" />
        <Action Name="CreateSampleUnboundItemTemplateRef" Type="RefCreator" AssetName="Items\Class.vstemplate"
						ReferenceType="EEst.SoftwareFactory.References.ClassLibraryReference, PathfinderSoftwareFactory" />
				<Action Name="CreateUnboundItemTemplateRef" Type="RefCreator" AssetName="AddItemTemplateReference"
						ReferenceType="Microsoft.Practices.RecipeFramework.Library.AssetReferences.UnboundReferences.CSharpProjectRecipeReference, Microsoft.Practices.RecipeFramework.Library" />
        <Action Name="CreateUnboundProjectTemplateRef" Type="RefCreator" AssetName="AddProjectTemplateReference"
						ReferenceType="EEst.SoftwareFactory.References.SolutionFolderRecipeReference, PathfinderSoftwareFactory" />
        <Action Name="CreateAppProjectTemplateRef" Type="RefCreator" AssetName="CreateApplicationVCPPProject"
						ReferenceType="EEst.SoftwareFactory.References.SolutionFolderApplicationRecipeReference, PathfinderSoftwareFactory" />
        <Action Name="CreateDCProjectTemplateRef" Type="RefCreator" AssetName="CreateDriveControlVCPPProject"
						ReferenceType="EEst.SoftwareFactory.References.SolutionFolderDriveControlRecipeReference, PathfinderSoftwareFactory" />
        <Action Name="CreatePRProjectTemplateRef" Type="RefCreator" AssetName="CreatePathRecoginzerVCPPProject"
						ReferenceType="EEst.SoftwareFactory.References.SolutionFolderPathRecognizerRecipeReference, PathfinderSoftwareFactory" />
        <Action Name="CreateSTProjectTemplateRef" Type="RefCreator" AssetName="CreateVCPPStrategyProject"
						ReferenceType="EEst.SoftwareFactory.References.SolutionFolderStrategyRecipeReference, PathfinderSoftwareFactory" />
        <Action Name="CreateUnboundRecipeRef" Type="RefCreator" AssetName="AddRecipeReference"
						ReferenceType="EEst.SoftwareFactory.References.AnyElementReference, PathfinderSoftwareFactory" />
 <!-- Unbound Recipeの例
 <Action Name="CreateTestAddStrategyFileRef" Type="RefCreator" AssetName="TestAddStrategyFile"
                ReferenceType="EEst.SoftwareFactory.References.AnyElementReference, PathfinderSoftwareFactory" />
                -->
			</Actions>
		</Recipe>
    <Recipe Name="CreatePathfinderRobotProject">
      <!-- このRecipeがSolution生成時に実行される -->
      <Types>
        <TypeAlias Name="Evaluator" Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.ExpressionEvaluatorValueProvider,Microsoft.Practices.RecipeFramework.Library" />
      </Types>
      <Caption>Collects information for the new Pathfinder Robot C# Project.</Caption>
      <Arguments>
        <Argument Name="CygwinHome" Type="System.String">
        </Argument>
        <Argument Name="BrickOSHome" Type="System.String">
        </Argument>
        <Argument Name="H8ToolsHome" Type="System.String">
        </Argument>
        <Argument Name="FrameworkFolderName" Type="System.String">
          <ValueProvider Type="Evaluator"
             Expression="Framework" />
        </Argument>
        <Argument Name="ToolsFolderName" Type="System.String">
          <ValueProvider Type="Evaluator"
             Expression="Tools" />
        </Argument>
        <Argument Name="FrameworkSourcePlace" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="Templates\Solutions\Projects\PathfinderCore\" >
          </ValueProvider>
        </Argument>
        <Argument Name="ToolsSourcePlace" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="Templates\Solutions\Projects\Tools\" >
          </ValueProvider>
        </Argument>
        <Argument Name="BehaviorFramework" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="BehaviorFramework"/>
        </Argument>
        <Argument Name="PlatformWrapper" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="PlatformWrapper"/>
        </Argument>
        <Argument Name="SimulatorBase" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="SimulatorBase"/>
        </Argument>
        <Argument Name="RobotEmulator" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="RobotEmulator"/>
        </Argument>
        <Argument Name="VS" Type="EnvDTE.DTE, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
          <ValueProvider Type="EEst.SoftwareFactory.ValueProviders.EnvDTEValueProvider, PathfinderSoftwareFactory"/>
        </Argument>
        <Argument Name="VSVersion" Type="System.String">
          <ValueProvider Type="Evaluator" Expression="$(VS.Version)"></ValueProvider>
                         </Argument>
      </Arguments>
      <GatheringServiceData>
        <Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
          <Pages>
            <Page>
              <Title>Set up information for Cross Compile Envrionment</Title>
              <Fields>
                <Field Label="Cygwin Home" ValueName="CygwinHome" ReadOnly="true">
                  <Editor Type="EEst.SoftwareFactory.Editors.FolderChooser, PathfinderSoftwareFactory"/>
                </Field>
                <Field Label="BrickOS Home" ValueName="BrickOSHome" ReadOnly="true">
                  <Editor Type="EEst.SoftwareFactory.Editors.FolderChooser, PathfinderSoftwareFactory"/>
                </Field>
                <Field Label="H8 Tools Home" ValueName="H8ToolsHome" ReadOnly="true">
                  <Editor Type="EEst.SoftwareFactory.Editors.FolderChooser, PathfinderSoftwareFactory"/>
                </Field>
              </Fields>
            </Page>
          </Pages>
        </Wizard>
      </GatheringServiceData>
      <Actions>
        <Action Name="IsItExecutedQ" Type="EEst.SoftwareFactory.Actions.CheckContentAction, PathfinderSoftwareFactory">
          <Input Name="TextContent" RecipeArgument="CygwinHome"/>
        </Action>
        <Action Name="FindFrameworkFolder" Type="EEst.SoftwareFactory.Actions.FindSolutionFolderAction, PathfinderSoftwareFactory">
          <Input Name="FolderPath" RecipeArgument="FrameworkFolderName"/>
          <Output Name="FolderProject"/>
        </Action>
        <Action Name="ImportBF" Type="EEst.SoftwareFactory.Actions.ImportContents2Action, PathfinderSoftwareFactory">
          <Input Name="SourcePath" RecipeArgument="FrameworkSourcePlace"/>
          <Input Name="DestPath" RecipeArgument="FrameworkFolderName"/>
          <Input Name="TargetName" RecipeArgument="BehaviorFramework"/>
          <Input Name="VSVersion" RecipeArgument="VSVersion"/>
          <Input Name="CygwinHome" RecipeArgument="CygwinHome"/>
          <Input Name="BrickOSHome" RecipeArgument="BrickOSHome"/>
          <Input Name="H8ToolsHome" RecipeArgument="H8ToolsHome"/>
          <Output Name="ProjectFileName"/>
        </Action>
        <Action Name="ImportPW" Type="EEst.SoftwareFactory.Actions.ImportContents2Action, PathfinderSoftwareFactory">
          <Input Name="SourcePath" RecipeArgument="FrameworkSourcePlace"/>
          <Input Name="DestPath" RecipeArgument="FrameworkFolderName"/>
          <Input Name="TargetName" RecipeArgument="PlatformWrapper"/>
          <Input Name="VSVersion" RecipeArgument="VSVersion"/>
          <Input Name="CygwinHome" RecipeArgument="CygwinHome"/>
          <Input Name="BrickOSHome" RecipeArgument="BrickOSHome"/>
          <Input Name="H8ToolsHome" RecipeArgument="H8ToolsHome"/>
          <Output Name="ProjectFileName"/>
        </Action>
        <Action Name="ImportSB2" Type="EEst.SoftwareFactory.Actions.ImportContents2Action, PathfinderSoftwareFactory">
          <Input Name="SourcePath" RecipeArgument="FrameworkSourcePlace"/>
          <Input Name="DestPath" RecipeArgument="FrameworkFolderName"/>
          <Input Name="TargetName" RecipeArgument="SimulatorBase"/>
          <Input Name="VSVersion" RecipeArgument="VSVersion"/>
          <Input Name="CygwinHome" RecipeArgument="CygwinHome"/>
          <Input Name="BrickOSHome" RecipeArgument="BrickOSHome"/>
          <Input Name="H8ToolsHome" RecipeArgument="H8ToolsHome"/>
          <Output Name="ProjectFileName"/>
        </Action>
        <Action Name="AddBFProjFileToSolution" Type="EEst.SoftwareFactory.Actions.AddProjectToSolutionFolderAction, PathfinderSoftwareFactory">
          <Input Name="SolutionProject" ActionOutput="FindFrameworkFolder.FolderProject"/>
          <Input Name="ProjectFile" ActionOutput="ImportBF.ProjectFileName"/>
          <Output Name="AddedProject"/>
        </Action>
        <Action Name="AddPWProjFileToSolution" Type="EEst.SoftwareFactory.Actions.AddProjectToSolutionFolderAction, PathfinderSoftwareFactory">
          <Input Name="SolutionProject" ActionOutput="FindFrameworkFolder.FolderProject"/>
          <Input Name="ProjectFile" ActionOutput="ImportPW.ProjectFileName"/>
          <Output Name="AddedProject"/>
        </Action>
        <Action Name="DefineBFDependency" Type="Microsoft.Practices.RecipeFramework.Library.Actions.AddProjectDependencyAction, Microsoft.Practices.RecipeFramework.Library">
          <Input Name="Project" ActionOutput="AddBFProjFileToSolution.AddedProject"/>
          <Input Name="DependencyProject" ActionOutput="AddPWProjFileToSolution.AddedProject"/>
        </Action>
        <Action Name="AddSB2ProjFileToSolution" Type="EEst.SoftwareFactory.Actions.AddProjectToSolutionFolderAction, PathfinderSoftwareFactory">
          <Input Name="SolutionProject" ActionOutput="FindFrameworkFolder.FolderProject"/>
          <Input Name="ProjectFile" ActionOutput="ImportSB2.ProjectFileName"/>
        </Action>
        <Action Name="FindToolsFolder" Type="EEst.SoftwareFactory.Actions.FindSolutionFolderAction, PathfinderSoftwareFactory">
          <Input Name="FolderPath" RecipeArgument="ToolsFolderName"/>
          <Output Name="FolderProject"/>
        </Action>
        <Action Name="ImportRE" Type="EEst.SoftwareFactory.Actions.ImportContents2Action, PathfinderSoftwareFactory">
          <Input Name="SourcePath" RecipeArgument="ToolsSourcePlace"/>
          <Input Name="DestPath" RecipeArgument="ToolsFolderName"/>
          <Input Name="TargetName" RecipeArgument="RobotEmulator"/>
          <Input Name="VSVersion" RecipeArgument="VSVersion"/>
          <Input Name="CygwinHome" RecipeArgument="CygwinHome"/>
          <Input Name="BrickOSHome" RecipeArgument="BrickOSHome"/>
          <Input Name="H8ToolsHome" RecipeArgument="H8ToolsHome"/>
          <Output Name="ProjectFileName"/>
        </Action>
        <Action Name="AddREProjFileToSolution" Type="EEst.SoftwareFactory.Actions.AddProjectToSolutionFolderAction, PathfinderSoftwareFactory">
          <Input Name="SolutionProject" ActionOutput="FindToolsFolder.FolderProject"/>
          <Input Name="ProjectFile" ActionOutput="ImportRE.ProjectFileName"/>
        </Action>
      </Actions>
    </Recipe>
		<Recipe Name="GenerateRepeatingClassT4" Bound="false">
			<xi:include href="TypeAlias.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
			<Caption>Add class with T4 generated content</Caption>
			<HostData>
				<Icon ID="689" />
				<CommandBar Name="Project" />
			</HostData>
			<Arguments>
				<Argument Name="CurrentProject" Type="EnvDTE.Project, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
					<ValueProvider Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.FirstSelectedProject, Microsoft.Practices.RecipeFramework.Library" />
				</Argument>
				<Argument Name="ClassName">
					<Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.CodeIdentifierStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
				</Argument>
				<Argument Name="TargetFile">
					<ValueProvider Type="Evaluator"
									 Expression="$(ClassName).cs">
						<MonitorArgument Name="ClassName" />
					</ValueProvider>
				</Argument>
				<Argument Name="TargetNamespace">
					<Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
					<ValueProvider Type="Evaluator"
									 Expression="$(CurrentProject.Properties.Item('DefaultNamespace').Value)" />
				</Argument>
				<!-- Show that T4 receives typed values in the dictionary -->
				<Argument Name="Iterations" Type="System.Int32" />
			</Arguments>
			<GatheringServiceData>
				<Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
					<Pages>
						<Page>
							<Title>Class information</Title>
							<Fields>
								<Field ValueName="ClassName" Label="Class Name" />
								<Field ValueName="TargetNamespace" Label="Namespace" />
								<Field ValueName="Iterations" Label="Iterations"
									InvalidValueMessage="Must enter a valid integer value to use for the number of iterations." />
							</Fields>
						</Page>
					</Pages>
				</Wizard>
			</GatheringServiceData>
			<Actions>
				<Action Name="GenerateClass" Type="Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates.TextTemplateAction, Microsoft.Practices.RecipeFramework.VisualStudio.Library"
						Template="Text\Repeating.cs.t4" 
						InputValue="Configured Static Value">
					<!-- InputValue shows a configured attribute in T4 template that doesn't need a property on the class -->
					<Input Name="ClassName" RecipeArgument="ClassName" />
					<Input Name="TargetNamespace" RecipeArgument="TargetNamespace" />
					<Input Name="Iterations" RecipeArgument="Iterations" />
					<Output Name="Content" />
				</Action>
				<Action Name="AddClass" Type="Microsoft.Practices.RecipeFramework.Library.Actions.AddItemFromStringAction, Microsoft.Practices.RecipeFramework.Library"
						Open="true">
					<!--Shows how to specify a property as a fixed value in config-->
					<Input Name="Content" ActionOutput="GenerateClass.Content" />
					<Input Name="TargetFileName" RecipeArgument="TargetFile" />
					<Input Name="Project" RecipeArgument="CurrentProject" />
				</Action>
			</Actions>
		</Recipe>
		<Recipe Name="NewItemClass" Recurrent="true">
			<xi:include href="TypeAlias.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
			<Caption>Collects information from the user</Caption>
			<Description>
				This recipe doesn't perform any actions, but showcases the features
				available to build highly functional wizards by taking advantage of
				type converters and editors.
			</Description>
			<HostData>
				<Icon ID="1429"/>
				<CommandBar Name="Project" />
			</HostData>
			<Arguments>
				<Argument Name="Developer" />
				<!-- Example of automatic UITypeEditor provided by .NET, and a custom value provider -->
				<Argument Name="Date" Type="System.DateTime">
					<ValueProvider Type="EEst.SoftwareFactory.ValueProviders.DateNowValueProvider, PathfinderSoftwareFactory" />
				</Argument>
				<!-- Example of automatic converter provided by .NET -->
				<Argument Name="Platform" Type="System.PlatformID" />
				<Argument Name="Iterations" Type="System.Int32">
					<!-- Shows how to use the expression evaluator to assign simple default values, which are typed nevertheless -->
					<!-- The full type of the evaluator is included using XInclude from a reusable file -->
					<ValueProvider Type="Evaluator" Expression="5" />
				</Argument>
				<!-- The following two arguments are not shown to the user, but collaborate to retrieve a value -->
				<Argument Name="CurrentProject" Type="EnvDTE.Project, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
					<ValueProvider Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.FirstSelectedProject, Microsoft.Practices.RecipeFramework.Library" />
				</Argument>
				<Argument Name="TargetNamespace">
					<Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
					<!-- Shows an argument with a custom type defined in-place, and not collected by the wizard -->
					<ValueProvider Type="Evaluator" Expression="$(CurrentProject.Properties.Item('DefaultNamespace').Value).Generated" />
				</Argument>
				<Argument Name="Project" Type="EnvDTE.Project, EnvDTE" Required="false">
					<!-- Converter ensures that a string representation of a project is valid, and also allows conversion to/from it to the Project instance. -->
					<Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.ProjectConverter, Microsoft.Practices.RecipeFramework.Library" />
				</Argument>
			</Arguments>
			<GatheringServiceData>
				<Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
					<Pages>
						<Page>
							<Title>Collect information using editors, converters and value providers.</Title>
							<Fields>
								<Field ValueName="Developer" Label="Your name">
									<Tooltip>Custom editor provided by the guidance package, the MessageEditor, also used in the "Say a message" recipe.</Tooltip>
									<Editor Type="EEst.SoftwareFactory.Editors.MessageEditor, PathfinderSoftwareFactory" />
								</Field>
								<Field ValueName="Date" Label="Date">
									<Tooltip>Automatic editor provided by .NET.</Tooltip>
								</Field>
								<Field ValueName="Iterations" Label="Iterations"
									InvalidValueMessage="Must enter a valid integer value to use for the number of iterations.">
									<Tooltip>Value retrieved using the value editor, with a fixed value but converted to the proper type automatically.</Tooltip>
								</Field>
								<Field ValueName="Platform" Label="Platform">
									<Tooltip>Automatic converter and values provided by .NET to all Enum types.</Tooltip>
								</Field>
								<Field ValueName="TargetNamespace" Label="Target Namespace">
									<Tooltip>This value was calculated using the ExpressionEvaluatorValueProvider, and referring to other recipe arguments (one containing the current project in this case).</Tooltip>
								</Field>
								<Field ValueName="Project" Label="Reference Project">
									<Tooltip>Shows a complex editor for selecting a project in the current solution, provided with the Library.</Tooltip>
									<Editor Type="Microsoft.Practices.RecipeFramework.Library.Editors.SolutionPickerEditor, Microsoft.Practices.RecipeFramework.Library" />
								</Field>
							</Fields>
						</Page>
					</Pages>
				</Wizard>
			</GatheringServiceData>
		</Recipe>
		<Recipe Name="HelloWorldRecipe" Bound="true">
			<Caption>Say a message</Caption>
			<Description>Accepts a message as input and shows a message box with it.</Description>
			<HostData>
				<Icon ID="1046"/>
				<CommandBar Name="Solution Folder"/>
				<CommandBar Name="Project"/>
				<CommandBar Name="Web Project"/>
				<CommandBar Name="Web Item"/>
				<CommandBar Name="Web Folder"/>
			</HostData>
			<Arguments>
				<Argument Name="Message" />
			</Arguments>
			<GatheringServiceData>
				<Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
					<Pages>
						<Page>
							<Title>Collect message to show</Title>
							<LinkTitle>Provide a message that will be used by the HelloWorldAction.</LinkTitle>
							<Help>You shouldn't need a lot of help!</Help>
							<Fields>
								<Field ValueName="Message" Label="Message">
									<Editor Type="EEst.SoftwareFactory.Editors.MessageEditor, PathfinderSoftwareFactory" />
								</Field>
							</Fields>
						</Page>
					</Pages>
				</Wizard>
			</GatheringServiceData>
			<Actions>
				<Action Name="HelloWorld" Type="EEst.SoftwareFactory.Actions.HelloWorldAction, PathfinderSoftwareFactory">
					<Input Name="HelloMessage" RecipeArgument="Message" />
				</Action>
			</Actions>
		</Recipe>
		<Recipe Name="CustomWizardPages">
			<Caption>Example of Custom Wizard Pages</Caption>
			<Description>This recurrent recipe demonstrates use of custom wizard pages</Description>
			<HostData>
				<Icon ID="1047"/>
				<CommandBar Name="Solution Folder"/>
			</HostData>
			<Arguments>
				<Argument Name="Argument1" Type="System.String" />
				<Argument Name="Argument2" Type="System.String" />
				<Argument Name="Argument3" Type="System.Drawing.Font, System.Drawing, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
			</Arguments>
			<GatheringServiceData>
				<Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
					<Pages>
						<Page Type="EEst.SoftwareFactory.CustomWizardPages.CustomWizPage1, PathfinderSoftwareFactory" Width="800" Height="500" />
						<Page Type="EEst.SoftwareFactory.CustomWizardPages.CustomWizPage2, PathfinderSoftwareFactory" />
					</Pages>
				</Wizard>
			</GatheringServiceData>
			<Actions>
				<Action Name="HelloWorld" Type="EEst.SoftwareFactory.Actions.HelloWorldAction, PathfinderSoftwareFactory">
					<Input Name="HelloMessage" RecipeArgument="Argument1" />
				</Action>
				<Action Name="HelloWorld2" Type="EEst.SoftwareFactory.Actions.HelloWorldAction, PathfinderSoftwareFactory">
					<Input Name="HelloMessage" RecipeArgument="Argument2" />
				</Action>
			</Actions>
		</Recipe>
		<Recipe Name="AddItemTemplateReference" Bound="false">
			<Caption>Add an item template reference to a Project</Caption>
			<HostData>
				<Icon ID="525" />
				<CommandBar Name="Project" />
			</HostData>
			<Arguments>
				<Argument Name="TemplateFilename" Type="System.String"/>
			</Arguments>
			<GatheringServiceData>
				<Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
					<Pages>
						<Page>
							<Title>New Template Reference</Title>
							<Fields>
								<Field ValueName="TemplateFilename" Label="Template filename">
									<Editor Type="EEst.SoftwareFactory.Editors.ItemTemplateChooser, PathfinderSoftwareFactory" />
								</Field>
							</Fields>
						</Page>
					</Pages>
				</Wizard>
			</GatheringServiceData>
			<Actions>
				<Action Type="EEst.SoftwareFactory.Actions.AddTemplateReference, PathfinderSoftwareFactory"
						Name="AddItemTemplateReference">
					<Input Name="TemplateFilename" RecipeArgument="TemplateFilename"/>
				</Action>
			</Actions>
		</Recipe>
		<Recipe Name="AddProjectTemplateReference" Bound="false">
			<Caption>Add a project template reference to a Solution Folder or Solution</Caption>
			<HostData>
				<Icon ID="680" />
				<CommandBar Name="Solution Folder" />
				<CommandBar Name="Solution" />
			</HostData>
			<Arguments>
				<Argument Name="TemplateFilename" Type="System.String"/>
			</Arguments>
			<GatheringServiceData>
				<Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
					<Pages>
						<Page>
							<Title>New Template Reference</Title>
							<Fields>
								<Field ValueName="TemplateFilename" Label="Template filename">
									<Editor Type="EEst.SoftwareFactory.Editors.ProjectTemplateChooser, PathfinderSoftwareFactory" />
								</Field>
							</Fields>
						</Page>
					</Pages>
				</Wizard>
			</GatheringServiceData>
			<Actions>
				<Action Type="EEst.SoftwareFactory.Actions.AddTemplateReference, PathfinderSoftwareFactory"
						Name="AddItemTemplateReference">
					<Input Name="TemplateFilename" RecipeArgument="TemplateFilename"/>
				</Action>
			</Actions>
		</Recipe>
		<Recipe Name="RecipeWithInitialState">
			<Caption>Recipe that is loaded with preset values in the invoking .vstemplate file</Caption>
			<Arguments>
				<Argument Name="StringParameter" Type="System.String"/>
				<Argument Name="IntParameter" Type="System.Int32"/>
				<Argument Name="DoubleParameter" Type="System.Double"/>
			</Arguments>
			<GatheringServiceData>
				<Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
					<Pages>
						<Page>
							<Title>Wizard with initial state</Title>
							<Help>Wizard values are set in the .vstemplate</Help>
							<Fields>
								<Field ValueName="StringParameter" Label="String parameter">
									<Help>String parameter with initial state specified</Help>
								</Field>
								<Field ValueName="IntParameter" Label="Integer parameter">
									<Help>Integer parameter with initial state specified</Help>
								</Field>
								<Field ValueName="DoubleParameter" Label="Double parameter">
									<Help>Double parameter with initial state specified</Help>
								</Field>
							</Fields>
						</Page>
					</Pages>
				</Wizard>
			</GatheringServiceData>
			<Actions>
				<Action Name="HelloWorld" Type="EEst.SoftwareFactory.Actions.HelloWorldAction, PathfinderSoftwareFactory">
					<Input Name="HelloMessage" RecipeArgument="StringParameter" />
				</Action>
			</Actions>
		</Recipe>
		<Recipe Name="InitialStateSerializableClass">
			<Caption>Recipe called from the unfolding of a .vstemplate file</Caption>
			<Arguments>
				<Argument Name="SerializableField" Type="System.String"/>
				<Argument Name="SerializableType" Type="System.String"/>
				<Argument Name="NonSerializableField" Type="System.String"/>
				<Argument Name="NonSerializableType" Type="System.String"/>
			</Arguments>
			<GatheringServiceData>
				<Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
					<Pages>
						<Page>
							<Title>Wizard with initial state from unfolding</Title>
							<Help>Wizard values are set in the .vstemplate</Help>
							<Fields>
								<Field ValueName="SerializableField" Label="Serializable field">
									<Help>Name of a serializable field of the new class</Help>
								</Field>
								<Field ValueName="SerializableType" Label="Serializable type">
									<Help>Type of the previous serializable field</Help>
								</Field>
								<Field ValueName="NonSerializableField" Label="Non Serializable field">
									<Help>Name of a non serializable field of the new class</Help>
								</Field>
								<Field ValueName="NonSerializableType" Label="Non Serializable field">
									<Help>Type of the previous non serializable field</Help>
								</Field>
							</Fields>
						</Page>
					</Pages>
				</Wizard>
			</GatheringServiceData>
		</Recipe>
		<Recipe Name="AddRecipeReference" Bound="false">
			<Caption>Add a recipe reference to a solution element</Caption>
			<HostData>
				<Icon ID="525" />
				<CommandBar Name="Solution" />
				<CommandBar Name="Solution Folder" />
				<CommandBar Name="Project" />
				<CommandBar Name="Folder" />
				<CommandBar Name="Item" />
				<CommandBar Name="Web Project" />
				<CommandBar Name="Web Folder" />
				<CommandBar Name="Web Item" />
			</HostData>
			<Arguments>
				<Argument Name="RecipeName" Type="System.String">
					<Converter Type="EEst.SoftwareFactory.Converters.RecipeNameConverter, PathfinderSoftwareFactory"/>
				</Argument>
			</Arguments>
			<GatheringServiceData>
				<Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
					<Pages>
						<Page>
							<Title>New Template Reference</Title>
							<Fields>
								<Field ValueName="RecipeName" Label="Recipe" />
							</Fields>
						</Page>
					</Pages>
				</Wizard>
			</GatheringServiceData>
			<Actions>
				<Action Type="EEst.SoftwareFactory.Actions.AddRecipeReference, PathfinderSoftwareFactory"
						Name="AddRecipeReference">
					<Input Name="RecipeName" RecipeArgument="RecipeName"/>
				</Action>
			</Actions>
		</Recipe>
		<Recipe Name="ShowCurrentSelection">
			<Caption>Show current selection</Caption>
			<HostData>
				<Icon ID="172" />
				<CommandBar Name="Solution" />
				<CommandBar Name="Solution Folder" />
				<CommandBar Name="Project" />
				<CommandBar Name="Folder" />
				<CommandBar Name="Item" />
				<CommandBar Name="Web Project" />
				<CommandBar Name="Web Folder" />
				<CommandBar Name="Web Item" />
			</HostData>
			<Actions>
				<Action Name="ShowCurrent" Type="EEst.SoftwareFactory.Actions.ShowCurrentSelection, PathfinderSoftwareFactory" />
			</Actions>
		</Recipe>
		<Recipe Name="AddMainClass" Recurrent="false">
			<Types>
				<TypeAlias Name="Evaluator" Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.ExpressionEvaluatorValueProvider,Microsoft.Practices.RecipeFramework.Library" />
			</Types>
			<Caption>Add class with Main method</Caption>
			<HostData>
				<Icon ID="630" />
				<CommandBar Name="Project" />
			</HostData>
			<Arguments>
				<Argument Name="CurrentProject" Type="EnvDTE.Project, EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
					<ValueProvider Type="Microsoft.Practices.RecipeFramework.Library.ValueProviders.FirstSelectedProject, Microsoft.Practices.RecipeFramework.Library" />
				</Argument>
				<Argument Name="ClassName">
					<Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.CodeIdentifierStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
				</Argument>
				<Argument Name="TargetFile">
					<ValueProvider Type="Evaluator"
									 Expression="$(ClassName).cs">
						<MonitorArgument Name="ClassName" />
					</ValueProvider>
				</Argument>
				<Argument Name="TargetNamespace">
					<Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters.NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library"/>
					<ValueProvider Type="Evaluator"
									 Expression="$(CurrentProject.Properties.Item('DefaultNamespace').Value)" />
				</Argument>
				<Argument Name="HelloMessage">
					<Converter Type="EEst.SoftwareFactory.Converters.HelloWorldConverter, PathfinderSoftwareFactory" />
				</Argument>
			</Arguments>
			<GatheringServiceData>
				<Wizard xmlns="http://schemas.microsoft.com/pag/gax-wizards" SchemaVersion="1.0">
					<Pages>
						<Page>
							<Title>Hello World</Title>
							<Fields>
								<Field ValueName="ClassName" Label="Class Name" />
								<Field ValueName="TargetNamespace" Label="Namespace" />
								<Field ValueName="HelloMessage" Label="Message" />
							</Fields>
						</Page>
					</Pages>
				</Wizard>
			</GatheringServiceData>
			<Actions>
				<Action Name="GenerateMainClass" Type="Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates.TextTemplateAction, Microsoft.Practices.RecipeFramework.VisualStudio.Library"
						Template="Text\Program.cs.t4">
					<Input Name="Hello" RecipeArgument="HelloMessage" />
					<Input Name="ClassName" RecipeArgument="ClassName"/>
					<Input Name="TargetNamespace" RecipeArgument="TargetNamespace"/>
					<Output Name="Content" />
				</Action>
				<Action Name="AddMainClass" Type="Microsoft.Practices.RecipeFramework.Library.Actions.AddItemFromStringAction, Microsoft.Practices.RecipeFramework.Library"
						Open="true">
					<!--Shows how to specify a property as a fixed value in config-->
					<Input Name="Content" ActionOutput="GenerateMainClass.Content" />
					<Input Name="TargetFileName" RecipeArgument="TargetFile" />
					<Input Name="Project" RecipeArgument="CurrentProject" />
				</Action>
			</Actions>
		</Recipe>
	</Recipes>
</GuidancePackage>
